from flask import Flask, render_template,request
from analyse import 中国城市企业详情,美国城市企业详情,中国城市企行业数量
import pandas as pd
import matplotlib.pyplot as plt
import plotly as py
import plotly.graph_objs as go

app = Flask(__name__)

# 1.读数据
df = pd.read_csv ("../week13_flask/data/hurun_unicorn.tsv", encoding = "utf8", sep="\t")


@app.route('/')
def get_industry_rank():
    df_前二十行 = df[0:10]
    return render_template(
        "entry.html",
        # male_data、female_data 是HTML文件中的变量
        data=df_前二十行.to_html(classes="movies", index=False),
        # select=res
    )


@app.route('/country')
def rank_values() -> 'html':
    return render_template('ranks.html')    


# 中/美企业估值前二十名
@app.route('/showrank',methods=['POST'])
def show_rank() -> 'html':
    country = request.form["country"]
    df = pd.read_csv ("../week13_flask/data/hurun_unicorn.tsv", encoding = "utf8", sep="\t")
    df_zg = df[ df.国家.str.contains("中国")]
    df_zg_20 = df_zg.sort_values('估值（亿人民币）',ascending=False)[0:20]
    df_mg = df[ df.国家.str.contains("美国")]
    df_mg_20 = df_mg.sort_values('估值（亿人民币）',ascending=False)[0:20]

    if country =="中国":
        x=df_zg_20['企业名称']
        y=df_zg_20['估值（亿人民币）']
        text = df_zg_20['估值（亿人民币）']
        title = "中国企业估值排名前20分析图"
        xaxis_title = "城市"
        yaxis_title = "估值（亿人民币）"
    else:
        x=df_mg_20['企业名称']
        y=df_mg_20['估值（亿人民币）']
        text = df_mg_20['估值（亿人民币）']
        title="美国企业估值排名前20分析图"
        xaxis_title = "城市"
        yaxis_title = "估值（亿人民币）"
    bar1 = go.Bar(y=y, x=x,
              text = text, textposition = 'outside', name='Auckland')# textpositon 是将text数据显示在条形柱上， outside是外面， inside是里面 ；name 和上述Scatter一样
    fig = go.Figure(bar1)
    fig.update_layout(
        title = title,
        xaxis_title = xaxis_title,
        yaxis_title = yaxis_title,
    )
    py.offline.plot(fig, filename="example.html",auto_open=False)
    with open("example.html", encoding="utf8", mode="r") as f:
        plot_all = "".join(f.readlines())

    return render_template('ranks.html',the_plot_all = plot_all)



@app.route('/regions')
def region() -> 'html':
    # 中国城市列表
    df_zg = df[ df.国家.str.contains("中国")]
    中国城市_list = df_zg['城市'].unique().tolist()
    res2 = 中国城市_list
    # 美国城市列表
    df_mg = df[ df.国家.str.contains("美国") ]
    美国城市_list = df_mg['城市'].unique().tolist()
    res3 = 美国城市_list
    return render_template('region.html',select1=res2,select2=res3)



# 查看中/美国地区企业详情
@app.route('/search',methods = ['POST'])
def search_region() -> 'html':
    # 中国城市列表
    df_zg = df[ df.国家.str.contains("中国")]
    中国城市_list = df_zg['城市'].unique().tolist()
    res2 = 中国城市_list
    # 美国城市列表
    df_mg = df[ df.国家.str.contains("美国") ]
    美国城市_list = df_mg['城市'].unique().tolist()
    res3 = 美国城市_list

    # 获取前端用户选择信息
    cregions_select = request.form["cregions"]
    if cregions_select in 中国城市_list:
        result = 中国城市企业详情(cregions_select)
        # print(result)
        res4 = result
    mregions_select = request.form["mregions"]
    if mregions_select in 美国城市_list:
        result = 美国城市企业详情(mregions_select)
        res5 = result
        print(res5)
    return render_template("region.html", 
        select1=res2,select2=res3,
        data=res4.to_html(classes="movies", index=False),
        data1=res5.to_html(classes="movies", index=False),
        )

# 中国各城市企业行业数量比较
@app.route('/compare')
def compare() -> 'html':
    city = '城市'
    df1 = 中国城市企行业数量(city)

    # 画图
    bar1 = go.Bar(y=df1['行业数量'], x=df1.index.values.tolist(),
              text = df1['行业数量'], textposition = 'outside', name='行业数量')# textpositon 是将text数据显示在条形柱上， outside是外面， inside是里面 ；name 和上述Scatter一样
    bar2 = go.Bar(y=df1['企业数量'], x=df1.index.values.tolist(),
              text = df1['企业数量'], textposition = 'outside', name='企业数量')    
    fig = go.Figure([bar1,bar2])
    fig.update_layout(
        title = '中国各城市行业企业数量对比',
        xaxis_title = '城市',
        yaxis_title = '数量',
    )
    py.offline.plot(fig, filename="example.html",auto_open=False)
    with open("example.html", encoding="utf8", mode="r") as f:
        plot_all = "".join(f.readlines())

    return render_template("compare.html",the_plot_all = plot_all)     


if __name__ == '__main__':
    app.run(
        debug=True
    )